<?php
require_once("contenu/champ/defaut/defaut.php");
class C_listepage extends C_defaut{
	
	function template(){
		$tpl= <<<EOD
<bloc::{$this->_nom}>
<a href="?op=html&code={page:code}">{page:titre}</a><br/>
</bloc::{$this->_nom}>
EOD;
		return $tpl;
		
	}
	
	var $_courant=false;
	var $_extension=false;
	var $_limit=false;
	var $_order=false;
	var $_chemin='';
	var $_types_autorises = array();
	var $_types_exclus = array();
	
	function parse(&$TPLN){
		if($TPLN->BlocExists($this->_nom)){
			$bloc = $TPLN->GetBlocInFile($this->_nom);
			$bloc = addslashes($bloc);
			$tpl = "<?php\n";
			$tpl.= "\$bloc=<<<EOD\n".$bloc."\nEOD;\n";
			$tpl.= "require_once(get_path_module(\"contenu.liste\"));\n";
			$tpl.= "global \$html_id,\$html_type,\$html_path;\n";
			$tpl.= $this->_arrayToString("types_autorises",$this->_types_autorises)."\n";
			$tpl.= $this->_arrayToString("types_exclus",$this->_types_exclus)."\n";
			if($this->_courant){
				$tpl.="\$chemin_restreint = dirname(\$html_path.'a');\n";
				$tpl.="if(\$chemin_restreint!='.') \$chemin_restreint.='/';else \$chemin_restreint='';\n";
				$tpl.= "echo parseListe(\$html_id,\$bloc,'{$this->_nom}',\$chemin_restreint,\$types_exclus,\$types_autorises";				
			}else{
				$tpl.= "echo parseListe(\$html_id,\$bloc,'{$this->_nom}','{$this->_chemin}',\$types_exclus,\$types_autorises";
			}
			if($this->_limit){
				$tpl.= ",\${$this->_nom}_limit";
			}else{
				$tpl.= ",0";
			}
			if($this->_order){
				$tpl.= ",\${$this->_nom}_order";
			}else{
				$tpl.=",'h.id DESC'";
			}
			if($this->_extension){
				$tpl.= ",\${$this->_nom}_extension";
			}
			$tpl.=");\n?>";
			$TPLN->ParseBloc($this->_nom,$tpl);
		}
	}
	
	/**
	 * converti une table pour en faire un script php de creation
	 */
	function _arrayToString($nom,$table){
		$str = "\$$nom = array(";
		$in=false;
		for($i=0;$i<count($table);$i++){
			if($in)$str.=",";
			$str.="'{$table[$i]}'";
			$in=true;
		}
		$str.=");";
		return $str;
	}
	
	function restreindreAuRepertoireCourant(){
		$this->_courant = true;
	}
	
	function ajouterTypeAutorise($type){
		$this->_types_autorises[]=$type;
	}
	
	function ajouterTypeExclu($type){
		$this->_types_exclus[]=$type;
	}
	
	/**
	 * Autorise l'utilisation du tableau $<nom-champ>_extension dans la methode parseListe
	 * Attention, le type de contenu doit injecter ce tableau sinon il y a probleme de securite: injection de code malveillant
	 */
	function autoriserExtension(){
		$this->_extension=true;	
	}
	
	/**
	 * Autorise l'utilisation de la variable $<nom-champ>_limit dans la methode parseListe
	 * Attention, le type de contenu doit injecter cette variable sinon il y a probleme de securite: injection de code malveillant
	 */
	function autoriserLimit(){
		$this->_limit=true;
	}
	
	function autoriserOrder(){
		$this->_order=true;	
	}
}
?>
